package org.xw.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.xw.dto.ChatDTO;
import org.xw.dto.ChatOneDTO;
import org.xw.pojo.ChatPojo;
import org.xw.pojo.MembersPojo;
import org.xw.pojo.MessagePojo;
import org.xw.pojo.QwChat;

import java.sql.Timestamp;
import java.util.List;

@Mapper
public interface ChatMapper {
    /**
     * 创建群聊
     *
     * @param chatPojo
     */
    void create(ChatPojo chatPojo);

    /**
     * 添加成员
     *
     * @param userId
     * @param chatId
     */
    void addMember(int userId, int chatId);

    /**
     * 添加多人群聊标识
     *
     * @param id
     */
    void addMulti(Integer id, String headImage, String chatName);

    /**
     * 添加管理员
     *
     * @param
     * @param
     */
    void addLeader(int userId, Integer chatId);

    /**
     * 获取chat信息
     *
     * @param id
     * @return
     */
    ChatPojo getChatById(Integer id);

    /**
     * 获取成员
     *
     * @param id
     * @return
     */
    List<MembersPojo> getMembers(Integer id);

    /**
     * 获取更新时间
     *
     * @param chatId
     * @return
     */
    Timestamp getUpdateTime(int chatId);

    /**
     * 获取单个成员，z=主要用于判断是否还在聊天列表中
     *
     * @param userId
     * @param chatId
     * @return
     */
    MembersPojo getMember(String userId, Integer chatId);

    /**
     * 获取成员id
     *
     * @param chatId
     * @return
     */
    List<Integer> getUserIds(Integer chatId);

    /**
     * 踢指定人
     *
     * @param chatId
     * @param userId
     * @return
     */
    int out(int chatId, int userId);

    /**
     * 解散群
     *
     * @param chatId
     */
    void dissolve(Integer chatId);

    /**
     * 置顶群聊
     *
     * @param userId
     * @param chatId
     * @return
     */
    int top(String userId, Integer chatId);

    /**
     * 更新
     *
     * @param chat
     * @return
     */
    int updateData(ChatPojo chat);

    /**
     * 查询千问聊天列表是否存在，存在则返回id
     * @param userId
     * @return
     */
    QwChat selQW(Integer userId);

    /**
     * 添加千问聊天列表
     * @param qwChat
     */
    void insQW(QwChat qwChat);

    List<Integer> getChatList(int userId);

    MessagePojo getNewMsg(int chatId);

    List<ChatOneDTO> getPerson(Integer chatId);

    String getRemarkByUserId(Integer userId,Integer friendId);

    ChatDTO getQW(Integer userId);

    MessagePojo getQwNewMsg(Integer qwId);

    int newQwMsg(MessagePojo messagePojo);

    ChatOneDTO getNameAndImg(int userId);
}
